package cool.tsy.emos.wx.service;

import cn.hutool.json.JSONObject;
import cool.tsy.emos.wx.db.pojo.TbUser;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Set;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author WangHongxuan
 * @since 2021-09-24
 */
public interface UserService {

    /**
     * <h2>注册用户</h2>
     * @param registerCode 邀请码
     * @param code 微信小程序临时登录凭证
     * @param nickname 昵称
     * @param photo 头像
     * @return userId
     */
    int registerUser(String registerCode, String code, String nickname, String photo);

    /**
     * <h2>查询用户的权限列表</h2>
     */
    Set<String> searchUserPermissions(int userId);

    /**
     * <h2>登录<h2/>
     * @param code 微信临时授权字符串
     * @return id 用户 ID
     */
    Integer login(String code);

    /**
     * <h2>查询用户信息<h2/>
     */
    TbUser searchById(int userId);

    /**
     * <h2>查询员工入职日期</h2>
     */
    String searchUserHiredate(int userId);

    /**
     * <h2>查询用户摘要信息</h2>
     */
    HashMap searchUserSummary(int userId);

    /**
     * <h2>查询部门成员</h2>
     */
    ArrayList<HashMap> searchUserGroupByDept(String keyword);

    /**
     * <h2>查询成员信息（会议添加成员）</h2>
     */
    ArrayList<HashMap> searchMembers(List param);

    /**
     * <h2>根据用户ID查询用户信息</h2>
     */
    List<HashMap> selectUserPhotoAndName(List param);

    /**
     * <h2>查找用户Email</h2>
     */
    String searchMemberEmail(int id);

    /**
     * <h2>添加普通员工</h2>
     */
    void insertUser(HashMap param);

    /**
     * <h2>查询员工基本信息</h2>
     */
    HashMap searchUserInfo(int userId);

    /**
     * <h2>修改员工信息</h2>
     */
    int updateUserInfo(HashMap param);

    /**
     * <h2>删除用户</h2>
     */
    void deleteUserById(int id);

    /**
     * <h2>查询用户通讯录信息</h2>
     */
    JSONObject searchUserContactList();
}
